
#include "user_flash.h"



extern uint8  defualtUserAes128Key[];
extern uint8  userAes128Key[];
extern uint32 userBTKNum;

/**
  * 功    能：初始化用户flash存储区
  * 输入参数：
  * 返 回 值：
  * 说    明：
*/
void UserFlashInit(void)
{
	UserDataFlash_t tempUserData;
	
	UserFlashRead(&tempUserData);
	if (tempUserData.flag != 0xA5A5A5A5)
	{
		HalFlashErase(USER_DATA_PAGE);
		while (FCTL & 0x80);  // Wait until writing is done.
		tempUserData.flag = 0xA5A5A5A5;
		osal_memcpy(tempUserData.key, defualtUserAes128Key, sizeof(tempUserData.key));
		tempUserData.num = 0;
		userBTKNum = tempUserData.num;
		UserFlashWrite(&tempUserData);
	}
	else
	{
		osal_memcpy(userAes128Key, tempUserData.key, sizeof(tempUserData.key));
		userBTKNum = tempUserData.num;
	}
}

/**
  * 功    能：初始化用户flash存储区
  * 输入参数：
  * 返 回 值：
  * 说    明：
*/
void UserFlashRead(UserDataFlash_t *userData)
{
	HalFlashRead(USER_DATA_PAGE, 0, (uint8 *)userData, sizeof(UserDataFlash_t));
}

/**
  * 功    能：初始化用户flash存储区
  * 输入参数：
  * 返 回 值：
  * 说    明：
*/
void UserFlashWrite(UserDataFlash_t *userData)
{
	HalFlashWrite(USER_DATA_START_ADDR, (uint8 *)userData, sizeof(UserDataFlash_t));
}
